package dinamico.persistencia.controller;

import dinamico.persistencia.entities.Mensaje;
import java.util.List;
import javax.persistence.EntityManager;

public class MensajeController
{

   private EntityManager entityManager;

    public MensajeController(EntityManager entityManager)
    {
        this.entityManager = entityManager;
    }

    public boolean insertMensaje(Mensaje mensaje) throws Exception
    {
        try
        {
            entityManager.getTransaction().begin();
            entityManager.persist(mensaje);
            entityManager.getTransaction().commit();
            return true;
        }
        catch(Exception ex)
        {
           if (entityManager.getTransaction().isActive())
           {
                entityManager.getTransaction().rollback();
           }
           ex.printStackTrace();
           return false;
        }
    }

  public List<Mensaje> getAllMensje() throws Exception
  {
    try
    {
        javax.persistence.Query query = entityManager.createQuery
            ("select c from Mensaje as c");
        return query.getResultList();
    }
    catch(Exception ex)
    {
          ex.printStackTrace();
          throw ex;
    }
  }

   public List<Mensaje> getMensajebyGrupoAndZona (int codZona, int codGrupo) throws Exception
   {
        try
        {
            javax.persistence.Query query = entityManager.createQuery
                ("select c from Mensaje as c where c.zona.id = " + codZona+ " and c.grupo.id = "+codGrupo);
            return query.getResultList();
        }
        catch(Exception ex)
        {
            ex.fillInStackTrace();
            return null;
        }
    }

    public List<Mensaje> getAllMensajesByzona (int codZona) throws Exception
    {
        try
        {
            javax.persistence.Query query = entityManager.createQuery
                ("select c from Mensaje as c where c.zona.id = " + codZona);
            return query.getResultList();
        }
        catch(Exception ex)
        {
            ex.fillInStackTrace();
            return null;
        }
    }

}
